<?php

declare(strict_types=1);

namespace Dreamcat\PropertyAnalysis\Annotation;

use Attribute;
use JetBrains\PhpStorm\Immutable;
use JetBrains\PhpStorm\Pure;

/**
 * 数组的类型描述
 * @author vijay
 */
#[Attribute(Attribute::TARGET_PROPERTY | Attribute::TARGET_PARAMETER)]
#[Immutable]
class ArrayDescAnno
{
    /**
     * @param string $elementType 元素的类型
     * @param bool $elementIsClass 元素是否是类
     * @param bool $isMap 是否map
     */
    public function __construct(
        private string $elementType,
        private bool $elementIsClass = true,
        private bool $isMap = false
    ) {
    }

    /**
     * @return bool 是否map
     */
    #[Pure]
    public function isMap(): bool
    {
        return $this->isMap;
    }

    /**
     * @return bool 元素是否是类
     */
    #[Pure]
    public function isElementIsClass(): bool
    {
        return $this->elementIsClass;
    }

    /**
     * @return string 元素的类型
     */
    #[Pure]
    public function getElementType(): string
    {
        return $this->elementType;
    }
}

# end of file
